package gervosou;

import java.util.*; 
import java.io.*;

public class menuBanque implements Serializable {

	private static final long serialVersionUID = 1L;
	private String nomfich = "Fsauve.txt";
	private banque banque;

	public menuBanque() {
		// Cr�ation de l'instance de la classe Application "ban"
		banque = new banque();
		// Restauration des objets de l'application
		this.restaure();
	}
	// ***************************
	// M�thodes publiques
	// ***************************
	public void menuPrincipal() {
		int choix;
		GregorianCalendar datejour = new GregorianCalendar();

		do {
		System.out.println();
		System.out.println("      **************************************");
		System.out.print("        On est le " + IO.ecrireDate(datejour));
		System.out.println();
		System.out.println("      *********************************************");
		System.out.println("      *             BANQUE GERVOSOUS              *");
		System.out.println("      *********************************************");
		System.out.println("      * 1- Nouveau compte personnel               *");
		System.out.println("      * 2- Consulter compte personnel             *");
		System.out.println("      * 3- Bloquer client physique                *");
		System.out.println("      * 4- Débloquer client physique              *"); 
		System.out.println("      * 0- Quitter                                *");
		System.out.println("      *********************************************");
		System.out.println();

		System.out.print("      Votre Choix : ");
		choix = IO.lireEntier();
		switch (choix) {
			case 1: {
				ctrNouveauComptePerso ctrNCP = new ctrNouveauComptePerso(banque); break;
			}
			case 2: {
				ctrConsulterComptePerso ctrCCP = new ctrConsulterComptePerso(banque); break;
			}
			case 3: {
				ctrBloquerClientPhysique ctrBCP = new ctrBloquerClientPhysique(banque); break;
			}
			case 4: {
				ctrDebloquerClientPhysique ctrDCP = new ctrDebloquerClientPhysique(banque); break;
			}
			default:
				break;
			} // switch
		System.out.println();
		} while (choix != 0);

		// Sauvegarde des objets de l'application
		this.sauvegarde();
	} // Fin menuPrincipal

	private void restaure() {
		// S�quence de restauration des objets de l'application
		try {
			FileInputStream f = new FileInputStream(nomfich);
			ObjectInputStream in = new ObjectInputStream(f);
			banque = (banque) in.readObject();
			System.out.println();
			System.out.println(" $$$ Restauration du fichier " + nomfich+ " realisée");
			System.out.println();
		} catch (Exception e) {
			System.out.println(" *** ");
			System.out.println(" *** Start : Pbs de Restauration / fichier "+ nomfich);
			System.out.println(" *** ");
		}
	}

	private void sauvegarde() {
		// S�quence de sauvegarde des objets de l'application
		try {
			FileOutputStream f = new FileOutputStream(nomfich);
			ObjectOutputStream out = new ObjectOutputStream(f);
			out.writeObject(banque);
			System.out.println();
			System.out.println(" $$$ Sauvegarde dans le fichier " + nomfich+ " realisee");
			System.out.println();
		} catch (Exception e) {
			System.out.println(" *** ");
			System.out.println(" *** Pbs de Sauvegarde dans le fichier "+ nomfich);
			System.out.println(" *** ");
		}
	}

} // fin classe MenuBanque

